In computer systems, a runtime environment is a collection of executable instructions that provides an operative foundation for execution of other applications. Specifically, a runtime environment typically includes one or more libraries of commands that other applications may utilize to accomplish computing tasks. Interfaces to such libraries are commonly referred to as application programming interfaces (APIs). For example, a given API may provide access to commands for user input, audio/visual output, networking, file management, commonly used algorithms and data structures, etc. More specifically, in object-oriented programming, the commands may be methods contained in classes. The concepts of methods and classes, as applied to object-oriented programming, are well known in the art.
The specific implementation of a runtime environment typically depends on the underlying computer system. Specifically, the implementation may depend on the underlying hardware architecture (e.g., instruction set, user interface, etc.), software operating system, any other similar factor, or any combination thereof For example, the implementation of a runtime environment for a Microsoft® Windows operating system would differ from the implementation of a runtime environment for a Linux operating system. Microsoft® is a registered trademark of Microsoft Corporation.
Though a runtime environment may be implemented differently for different types of computer systems, the different implementations may have some or all of an API in common. Further, the implementations may be designed so that a single application may be able to execute in multiple implementations of the runtime environment. Specifically, the application may be compiled into an intermediate language that is understood by multiple implementations of the runtime environment. Such runtime environments are commonly referred to as virtual machines, because the runtime environments provide a layer of virtualization between applications and the underlying computer systems.
In some cases, one or more of the commands available in a particular implementation of a runtime environment may not be supported by another implementation of the runtime environment. For example, a mobile phone implementation of a runtime environment may include a command (e.g., a command for using a hardware feature of the mobile phone) that is unsupported by a desktop computer implementation of the runtime environment. If an application uses a command that is unsupported by a particular implementation of a runtime environment, then the application may not be able to execute correctly using that implementation of the runtime environment. Specifically, if a reference to the unsupported command (e.g., an unsupported method call) is encountered during execution of the application, an error may occur.